package io.renren.modules.substation;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.renren.socket.DecodeIEC104JSON;
import io.renren.socket.SendMsgToClent;

public class iSendMsg extends SendMsgToClent {

    /**
     *
     * @param devId     设备编号
     * @param controlType 控制类型，2-(双点)遥控：开、关这种   3-遥调： 温度调到 25。5度 这种（暂定） 4-单点遥控
     * @param addPublic  公共地址（就是其他信息表的kind匹配，空调的可能也是） 00，01，02 转成 0，1，2 传入
     * @param typeDesc  描述（温度，湿度，SF6...）
     * @param Vaule  传输值（空值时传输缓存的值）
     * @param array  可能有类似空调的设备：空调模式1，空调模式2，空调模式3，属于空调的整体，可能存在整体上传需要传整体数组
     *               [
     *                  {
     *                      "devId":"中央空调",
     *                      "addPublic":"0",
     *                      "typeDesc":"空调模式1"
     *                      "Vaule":"null"
     *                  },
     *                  {
     *                      "devId":"中央空调",
     *                      "addPublic":"0",
     *                      "typeDesc":"空调模式2"
     *                      "Vaule":"36.5"
     *                  }
     *               ]
     * @return
     */
    public static String remoteControl104(String controlType,String devId,String addPublic,String typeDesc,String Vaule,JSONArray array){
        return DecodeIEC104JSON.remoteControl(controlType,devId,addPublic,typeDesc,Vaule,array);
    }

    public static String sendGetInfo(String action) {
        return sendgetInfo(action);
    }

    /**
     * 终端同步时间
     * @param dataTime 当前时间戳 “15000000000”
     * @return null:成功 其它：失败
     *
     */
    public static String sendSetDevData(String devId,String IP,String dataTime) {
        return sendsetDevData(devId,IP,dataTime);
    }
    /**
     * 修改终端状态
     * @param devSrc 设备来源
     *               1 String dev 终端自身
     *               2 String ied IED通道SU10
     *               3 String app 客户端APP
     * @param devId 设备 ID
     * @param devState 设备初始化状态
     * @return null:成功 其它：失败
     */
    public static String sendSetDevState(String IP,String devSrc,String devId,String devState) {
        return sendsetDevState(IP,devSrc,devId,devState);
    }

    /**
     * 设置终端权限
     * @param allowSampling 是否允许采样 enable/disable
     * @return null:成功 其它：失败
     */
    public static String sendSetDevPermission(String devId,String IP,String allowSampling) {
        return sendsetDevPermission(devId,IP,allowSampling);
    }
    /**
     * 设置循环重启时间setCycleRebootTime
     * @param cycleRebootTime 时间（时）“24”
     *                      1 int 6 每6小时重启一次
     *                      2 int 12 每12小时重启一次
     *                      3 int 24 每24小时重启一次
     * @return null:成功 其它：失败
     */
    public static String sendSetCycleRebootTime(String devId,String IP,String cycleRebootTime) {
        return sendsetCycleRebootTime(devId,IP,cycleRebootTime);
    }
    /**
     * 获取终端信息getDevInfo
     * @param dataTime 无效参数
     * @return null:成功 其它：失败
     * 例子：
     *  sendGetDevInfo(null)
     */
    public static String sendGetDevInfo(String devId,String IP,String dataTime) {
        return sendgetDevInfo(devId,IP,dataTime);
    }

    /**
     * 设置红外融合参数
     * @param irOvSupport enable/disable
     * @param scale 红外图相比背景图放大倍率
     * @param x 红外图左上角顶点相对背景
     * @param y 红外图左上角顶点相对背景
     * @param alpha 红外图透明度[0-255]
     * @return null:成功 其它：失败
     */
    public static String sendSetIrOverlay(String devId,String IP,String irOvSupport,String scale,String x,String y,String alpha) {
        return sendsetIrOverlay(devId,IP,irOvSupport,scale,x,y,alpha);
    }

    /**
     * 设置红外报警（监测区域）参数
     * @param array 红外报警监测 [1~9个区域]
     * @return null:成功 其它：失败
     * name 区域名称  必备 监测
     * type 区域类型  必备 [0-2] 监测区域类型，见后文
     * maxTemp 区域允许最高温  必备 单位：℃， 超过该温度值终端报警
     * delta 相对温差 δ  可选 δ = (T1-T2)/(T1-T0) * 100%
     * T1: 所有区域中  的最大值
     * T2: 所有区域中  的最小值
     * T0: 环境温度。采用温湿度计的温度值
     * diffTemp 区域内允许最大温差值  可选 单位：℃， 区域中最高温和最低温的差值
     * relativeTemp 相对温度值  可选 单位：℃， 本例中定义为相间温差值。即各区域最高温的最大差值。
     * distance 区域补偿距离  必备 [0-1200] 单位 cm，设置为 0 时不补偿
     * lineWidth 绘制区域时线宽   线宽与背景宽度百分比。主要线段类型使用
     * point 监测区域顶点坐标 Object  区域顶点坐标集合
     *          point.x 多边形顶点坐标 x  必备 x 与背景宽的百分比
     *          point.y 多边形顶点坐标 y
     * criteriaFlag 判据标志位
     * 例子：
     * JSONArray array = new JSONArray();
     *         for(int i=0;i<2;i++) {
     *             JSONObject IrWarningobj = new JSONObject();
     *
     *             JSONArray arraypoint = new JSONArray();
     *             for (int j = 0; j < 4; j++) {
     *                 JSONObject pointobj = new JSONObject();
     *                 pointobj.put("x", dataTime);
     *                 pointobj.put("y", dataTime);
     *                 arraypoint.add(pointobj);
     *             }
     *
     *             IrWarningobj.put("delta", delta);
     *             IrWarningobj.put("diffTemp", diffTemp);
     *             IrWarningobj.put("distance", distance);
     *             IrWarningobj.put("lineWidth", lineWidth);
     *             IrWarningobj.put("maxTemp", maxTemp);
     *             IrWarningobj.put("name", name);
     *             IrWarningobj.put("point", arraypoint);
     *             IrWarningobj.put("relativeTemp", relativeTemp);
     *             IrWarningobj.put("type", type);
     *             IrWarningobj.put("criteriaFlag", criteriaFlag);
     *
     *             array.add(IrWarningobj);
     *         }
     *         contentobj.put("IrWarning",arrayIrWarning);
     */
    public static String sendSetIrWarning(String devId,String IP,JSONArray array) {
        return sendsetIrWarning(devId,IP,array);
    }
    /**
     * 设置终端常规参数
     * @param contobj  终端常规参数
     * uploadInterval 采样时间间隔 string 可选 见后文 单位分钟
     * resolutionPhoto 照片分辨率 string 可选 1920*1080
     * resolutionVideo 录像分辨率 string 可选 640*480
     * timeVideo 录像持续时长 string 可选 10 单位： 秒
     * resolutionRVC 视频分辨率 string 可选 640*480
     * timeRVC 视频持续时长 string 可选 1 单位： 分钟
     * precisionTemp 测温精度 string 可选 0.1 精确到小数点后一位
     * resolutionTI 红外热图分辨率 string 可选 640*480 暂未使用
     * epsilonIR 发射率 string 可选 (0-1]
     * distanceIR 补偿距离 string 可选 [0-1200] 单位厘米，为 0 不补偿
     * reflectedTemp 反射温度 string 可选 (0-99) 单位摄氏度
     * @return null:成功 其它：失败
     * 例子：
     * JSONObject contobj = new JSONObject();
     *     contobj.put("uploadInterval",uploadInterval);
     *     contobj.put("resolutionPhoto",resolutionPhoto);
     *     contobj.put("resolutionVideo",resolutionVideo);
     *     contobj.put("timeVideo",timeVideo);
     *     contobj.put("resolutionRVC",resolutionRVC);
     *     contobj.put("timeRVC",timeRVC);
     *     contobj.put("precisionTemp",precisionTemp);
     *     contobj.put("resolutionTI",resolutionTI);
     *     contobj.put("epsilonIR",epsilonIR);
     *     contobj.put("distanceIR",distanceIR);
     *     contobj.put("reflectedTemp",reflectedTemp);
     */

    public static String sendSetDevParam(String devId,String IP,JSONObject contobj ) {
        return sendsetDevParam(devId,IP,contobj);
    }
    /**
     * 查询终端常规参数getDevParam
     * @param dataTime 无效参数 可为null
     * @return null:成功 其它：失败
     */
    public static String sendGetDevParam(String devId,String IP,String dataTime) {
        return sendgetDevParam(devId,IP,dataTime);
    }

    /**
     * 设置局放报警参数
     * @param contobj 局放报警参数
     * dischargeCapacityJf 放电峰值  必备 [0-3000] 放电峰值阈值
     * dischargeFrequencyJf 放电频次  必备 [0-3000] 放电频次阈值
     * dischargeCapacityDeltaJf 放电峰值   可选 [0-3000]
     * dischargeFrequencyDeltaJf 放电频次   可选 [0-3000]
     * noiseBase 特高频局放底噪 int 可选 [-1-1500] -1:重置底噪 其他值：直接设置底噪
     * @return null:成功 其它：失败
     * 例子：
     * JSONObject contobj = new JSONObject();
     *         contobj.put("dischargeCapacityJf",dischargeCapacityJf);
     *         contobj.put("dischargeFrequencyJf",dischargeFrequencyJf);
     *         contobj.put("dischargeCapacityDeltaJf",dischargeCapacityDeltaJf);
     *         contobj.put("dischargeFrequencyDeltaJf",dischargeFrequencyDeltaJf);
     *         contobj.put("noiseBase",noiseBase);
     */
    public static String sendSetJfWarning(String devId,String IP,JSONObject contobj) {
        return sendsetJfWarning(devId,IP,contobj);
    }

    /**
     * 查询局放报警参数getJfWarning
     * @param dataTime 无效参数 可为null
     * @return null:成功 其它：失败
     */
    public static String sendGetJfWarning(String devId,String IP,String dataTime) {
        return sendgetJfWarning(devId,IP,dataTime);
    }
    /**
     * 重置特高频局放底噪setJfNoiseBase
     * @param noiseBase
     * noiseBase 特高频局放底噪  可选 [-1-1500] -1:重置底噪 其他值：直接设置底噪
     * @return null:成功 其它：失败
     */
    public static String sendSetJfNoiseBase(String devId,String IP,String noiseBase) {
        return sendsetJfNoiseBase(devId,IP,noiseBase);
    }
    /**
     * 查询特高频局放底噪getJfNoiseBase
     * @param dataTime 无效参数 可为null
     * @return null:成功 其它：失败
     */
    public static String sendGetJfNoiseBase(String devId,String IP,String dataTime) {
        return sendgetJfNoiseBase(devId,IP,dataTime);
    }

    /**
     * 设置可见光报警参数
     * @param camIDSupport enable/disable
     * camIDSupport 异物入侵检测开启状态 String 必备 见附录 见后文
     * idSerial 异物入侵百度序列号 String 可选 见后文(接口预留)
     * @return null:成功 其它：失败
     */
    public static String sendSetCamWarning(String devId,String IP,String camIDSupport) {
        return sendsetCamWarning(devId,IP,camIDSupport);
    }

    /**
     * 查询可见光报警参数getCamWarning
     * @param dataTime 无效参数 null
     * @return null:成功 其它：失败
     */
    public static String sendGetCamWarning(String devId,String IP,String dataTime) {
        return sendgetCamWarning(devId,IP,dataTime);
    }

    /**
     * 设置终端 IP 地址
     * @param IPInfoobj IP地址信息
     * ipVersion IP 版本 string 必备 IPv4/IPv6 见后文
     * ipType IP 类型 string 必备 见后文 static/dhcp
     * ipAddres IP 地址 string 可选 合法 IP static 时必选
     * mask 子网掩码 string 可选 合法地址 static 时必选
     * gateway 网管 string 可选 合法地址 static 时必选
     * dns DNS string 可选 合法地址 static 时必选
     * @return null:成功 其它：失败
     * 例子：
     * JSONObject IPInfoobj = new JSONObject();
     *         IPInfoobj.put("ipVersion",ipVersion);
     *         IPInfoobj.put("ipType",ipType);
     *         IPInfoobj.put("ipAddres",ipAddres);
     *         IPInfoobj.put("mask",mask);
     *         IPInfoobj.put("gateway",gateway);
     *         IPInfoobj.put("dns",dns);
     */
    public static String sendSetDevIP(String devId,String IP,JSONObject IPInfoobj) {
        return sendsetDevIP(devId,IP,IPInfoobj);
    }

    /**
     * 查询 IP 地址信息getDevIP
     * @param dataTime 无效参数 null
     * @return null:成功 其它：失败
     */
    public static String sendGetDevIP(String devId,String IP,String dataTime) {
        return sendgetDevIP(devId,IP,dataTime);
    }

    /**
     * 配置台账信息
     * @param setStandingBook 青岛台账 =1/青浦台账 =2/SU10台账 =3  例：“1”
     * @param StandingBookobj 台帐实质信息
     * sbName 台账名称 string 必备 见后文
     *          1 IR 终端红外台账
     *          2 UHF 终端特高频局放台账
     *          3 SU10 ID 待定，区分不同SU10
     * stationName 站点名称 string 可选
     * stationCode 站点编码 string 可选
     * dutName 被测设备名称 string 可选
     * dutCode 被测设备编码 string 可选
     * tsName 测点名称 string sbType=1 和 3 时必备
     * tsCode 测点编码 string sbType=1 和 3 时必备
     * devName 设备名称 string sbType=2 时必备
     * devCode 设备编码 string sbType=2 时必备
     * devType 设备类型 string sbType=2 时必备
     * devTypeCode 设备类型编码 string sbType=2 时必备
     * terminalNo 端子号 string sbType=2 时必备
     *
     * devSrc 设备来源 String 必备 见附录 附录 devSrc
     *               1 String dev 终端自身
     *               2 String ied IED通道SU10
     *               3 String app 客户端APP
     * devID 设备 ID String 可选 对于 IED 通道设备，需要指定 ID
     * sbType 台账类型 String 可选 见后文 查询是可选，设置以及响应时必备
     * 1 1 青岛
     * 2 2 青浦
     * 3 3 SU10
     * SbInfo 台账实质信息 Object 必备
     * @return null:成功 其它：失败
     * json事例：
     * {
     *      "devSrc": "dev",
     *      "devId": "MP01MN1190601000207",
     *      "sbType": "1",
     *      "SbInfo": [
     *          {
     *              "sbName": "IR",
     *              "stationName": "220kV团岛变电站",
     *              "stationCode": "06M00000000106294_zf01",
     *              "dutName": "1号220kV主变",
     *              "dutCode": "06M00000000106640_0301",
     *              "tsName": "1号主变低压侧",
     *              "tsCode": "06M00000000106640_0301_002"
     *          },
     *          {
     *              "sbName": "UHF",
     *              "stationName": "220kV团岛变电站",
     *              "stationCode": "06M00000000106294_zf01",
     *              "dutName": "1号220kV主变",
     *              "dutCode": "06M00000000106640_0301",
     *              "tsName": "1号主变低压侧",
     *              "tsCode": "06M00000000106640_0301_001"
     *          }
     *      ]
     * }
     */
    public static String sendSetStandingBook(String devId,String IP,String setStandingBook,JSONObject StandingBookobj ) {
        return sendsetStandingBook(devId,IP,setStandingBook,StandingBookobj);
    }

    /**
     * 查询台账信息getStandingBook
     * @param devSrc
     * @param devId
     * devSrc 设备来源 String 必备 见附录 附录 devSrc
     *               1 String dev 终端自身
     *               2 String ied IED通道SU10
     *               3 String app 客户端APP
     * devID 设备 ID String 可选 对于 IED 通道设备，需要指定 ID
     * @return null:成功 其它：失败
     */
    public static String sendGetStandingBook(String IP,String devSrc,String devId) {
        return sendgetStandingBook(IP,devSrc,devId);
    }
    /**
     * 设置操作人
     * @param OperateInfoobj 初始化操作信息
     * people 初始化操作人姓名 string 必备
     * time 初始化操作时间 string 必备
     * @return null:成功 其它：失败
     * 例子：
     * JSONObject OperateInfoobj = new JSONObject();
     *         OperateInfoobj.put("people",people);     "people": "江瑞晶",
     *         OperateInfoobj.put("time",time);         "time": "2019-07-16 15:22:40"
     *
     *
     */
    public static String sendSetOperate(String devId,String IP,JSONObject OperateInfoobj) {
        return sendsetOperate(devId,IP,OperateInfoobj);
    }

    /**
     * 设置终端组网配置参数
     * @param NetConfigobj 终端初始化网络配置
     * netType 组网类型 string 必备 见后文
     *                      1 ethernet 以太网组网
     *                      2 wifi WiFi组网
     *                      3 mobile 移动数据组网
     * wifiName WiFi 热点 SSID string 可选 如果是 WiFi 组网则必备
     * wifiPassword WiFi 热点密码 string 可选 WiFi 组网必备
     * @return null:成功 其它：失败
     * 例子：
     *         JSONObject NetConfigobj = new JSONObject();
     *         NetConfigobj.put("netType",netType);
     *         NetConfigobj.put("wifiName",wifiName);
     *         NetConfigobj.put("wifiPassword",wifiPassword);
     */
    public static String sendSetNetConfig(String devId,String IP,JSONObject NetConfigobj ) {
        return sendsetNetConfig(devId,IP,NetConfigobj);
    }

    /**
     * 抓取终端log  getDevLog
     * @param dataTime 无效参数 null
     * @return null:成功 其它：失败
     */
    public static String sendGetDevLog(String devId,String IP,String dataTime) {
        return sendgetDevLog(devId,IP,dataTime);
    }

    /**
     * 读取传感器信息
     * @param devSrc
     *               1 String dev 终端自身
     *               2 String ied IED通道SU10
     *               3 String app 客户端APP
     * @param devId
     * devSrc 数据来源的设备类型 string
     * devId 数据来源的设备 ID string
     * @return null:成功 其它：失败
     */
    public static String sendGetSensorInfo(String IP,String devSrc,String devId) {
        return sendgetSensorInfo(IP,devSrc,devId);
    }
    /**
     * 召测
     * @param sendarray 召测单个或多个设备时使用，内容为后三个参数主键组成的JSONObject，空值null时后三参数启用
     * @param devId 数据来源的设备ID
     * @param purpose 文件或者数据用途
     *      1 String log 设备log
     *      2 String irTemp 红外温度文件
     *      3 String irOvTemp 红外融合图温度文件
     *      4 String irImg 红外热图
     *      5 String irOvImg 红外融合图
     *      6 String camImg 可见光图片
     *      7 String camSobelImg 可见光轮廓图
     *      8 String camIdImg 可见光异物入侵检测标记图
     *      9 String jfPrpdImg 局放PRPD
     *      10 String jfPrpsImg 局放PRPS图
     *      11 String jfVideoStream 局放视频流
     *      12 String sampleData 通用采样数据
     *      13 String camScreenshotImg 可见光视频截图 – APP发送
     *      14 String irScreenshotImg 红外视频截图 – APP发送
     *      15 String irAreaImg 红外监测区域图 – APP发送
     *      16 String devSelfieImg 设备照片 – APP发送
     *      17 String devObjGroupImg 设备与被测物体合影 – APP发送
     *      18 String workerSelfieImg 专工自拍照片 – APP发送
     *      19 String rtSample 召测
     *      20 String sampleIcuData 重症监护协议封装文件
     *      21 String camVideo 可见光录像
     *      22 String soundRecord 声音采样文件
     * @param devSrc 数据来源的设备类型
     *               1 String dev 终端自身
     *               2 String ied IED通道SU10
     *               3 String app 客户端APP
     * @return null:成功 其它：失败
     * 例子：
     * JSONArray sendarray = new JSONArray();
     * for(int i=0;i<2;i++) {
     *    JSONObject obj = new JSONObject();
     *    obj.put("devSrc", devSrc);
     *    obj.put("purpose", purpose);
     *    obj.put("devId", devId);
     *    sendarray.add(obj);
     * }
     */
    public static String sendCmdRtSampling(String IP,JSONArray sendarray, String devId, String purpose, String devSrc) {
        return sendcmdRtSampling(IP,sendarray,devId,purpose,devSrc);
    }

    /**
     * 坏点修复
     * @return null:成功 其它：失败
     */
    public static String sendCmdIrBPR(String devId,String IP) {
        return sendcmdIrBPR(devId,IP);
    }

    /**
     * 控制终端实时视频cmdVideoStream
     * @param VideoStreamInfoobj
     * devSrc 需要视频的设备类型 String 必备 见 devSrc 定义
     *          1 String dev 终端自身
     *          2 String ied IED通道SU10
     *          3 String app 客户端APP
     * devId 需要视频的设备 ID String 可选 ied 类型必备
     * sid 视频会话 ID string 必备 区别不同视频会话，给一对多或者多对一视频预留用。由 APP 发起时设置。所有存活状态的视频会话该值不能相同。
     * type 视频类型 string 必备 见后文局域网通信协议
     *              1 Camera 可见光视频
     *              2 IR 红外视频
     *              3 UHF 特高频局放视频
     * channel 视频通道 string 可选 见后文
     *              1 cloud 云视频
     *              2 turn 穿网视频
     *              3 camera 局域网初始化视频（WiFi）
     *              4 lan 局域网
     * videoAction 视频控制动作 string 必备 见后文
     *              1 start 开始视频
     *              2 stop 停止视频
     * @return null:成功 其它：失败
     * 例子：
     *         "VideoStreamInfo": {
     *             "devSrc": "dev",
     *             "devId": "TP01MN2181221000042",
     *                     "sid": "1",
     *                     "type": "Camera",
     *                     "channel": "camera",
     *                     "videoAction": "start"
     *         }
     */
    public static String sendCmdVideoStream(String devId,String IP,JSONObject VideoStreamInfoobj) {
        return sendcmdVideoStream(devId,IP,VideoStreamInfoobj);
    }
    /**
     * 控制终端热点cmdWiFiHotSpots
     * @param ComCommandobj 公用控制指令
     * wifiHotSpots 热点状态 string 必备 见附录定义 开启或者关闭热点
     *                      1 String enable 开启或者支持
     *                      2 String disable 关闭或者不支持
     *
     * @return null:成功 其它：失败
     *
     * "ComCommand": {
     * "wifiHotSpots": "disable"
     * }
     */
    public static String sendCmdWiFiHotSpots(String devId,String IP,JSONObject ComCommandobj) {
        return sendcmdWiFiHotSpots(devId,IP,ComCommandobj);
    }
    /**
     * 控制设备延时重启cmdDevReboot
     * @param ComCommandobj 公用控制指令
     * rebootTime 延时重启时间 string 必备 见附录定义 单位分钟
     *                           1 0 立即重启
     *                           2 5 延时5分钟后重启
     *                           3 30 延时30分钟后重启
     *                           4 60 延时60分钟后重启
     * @return null:成功 其它：失败
     * "ComCommand": {
     * "rebootTime": "5"
     * }
     */
    public static String sendCmdDevReboot(String devId,String IP,JSONObject ComCommandobj) {
        return sendcmdDevReboot(devId,IP,ComCommandobj);
    }

    //
    /**
     * 获取终端文件-通知终端上传文件getDevFile
     * @param ComFile
     * devSrc 上传文件的设备来源 string 必备 见附录定义 继承 ComFileDataBase
     *          1 String dev 终端自身
     *          2    String ied IED通道SU10
     *          3 String app 客户端APP
     * purpose 文件或者数据用途 string 必备 见附录定义 继承 ComFileDataBase
     *      1 String log 设备log
     *      2 String irTemp 红外温度文件
     *      3 String irOvTemp 红外融合图温度文件
     *      4 String irImg 红外热图
     *      5 String irOvImg 红外融合图
     *      6 String camImg 可见光图片
     *      7 String camSobelImg 可见光轮廓图
     *      8 String camIdImg 可见光异物入侵检测标记图
     *      9 String jfPrpdImg 局放PRPD
     *      10 String jfPrpsImg 局放PRPS图
     *      11 String jfVideoStream 局放视频流
     *      12 String sampleData 通用采样数据
     *      13 String camScreenshotImg 可见光视频截图 – APP发送
     *      14 String irScreenshotImg 红外视频截图 – APP发送
     *      15 String irAreaImg 红外监测区域图 – APP发送
     *      16 String devSelfieImg 设备照片 – APP发送
     *      17 String devObjGroupImg 设备与被测物体合影 – APP发送
     *      18 String workerSelfieImg 专工自拍照片 – APP发送
     *      19 String rtSample 召测
     *      20 String sampleIcuData 重症监护协议封装文件
     *      21 String camVideo 可见光录像
     *      22 String soundRecord 声音采样文件
     * devId 文件来源设备 ID string 可选 继承 ComFileDataBase
     * @return null:成功 其它：失败
     * 事例
     *    [
     *     {
     *         "devSrc": "dev",
     *             "purpose": "jfPrpd",
     *             "devId": "TP01MN2181221000042"
     *     },
     *     {
     *         "devSrc": "dev",
     *             "purpose": "jfPrps",
     *             "devId": "TP01MN2181221000042"
     *     }
     * ]
     */
    public static String sendGetDevFile(String devId,String IP,JSONArray ComFilearray) {
        return sendgetDevFile(devId,IP,ComFilearray);
    }
    //通用上传文件 uploadFileRsp
    //
    /**
     * 获取终端数据getDevData
     * @param ComDataarray 通用数据信息
     * devSrc 数据来源的设备类型 string 必备 见附录 继承 ComFileDataBase
     * purpose 文件或者数据用途 string 必备 见附录 继承 ComFileDataBase
     * devId 数据来源的设备 ID string 可选 继承 ComFileDataBase
     * @return null:成功 其它：失败
     * 事例
     *   [
     *     {
     *         "devSrc": "dev",
     *             "purpose": "jfPrpd",
     *             "devId": "TP01MN2181221000042"
     *     },
     *     {
     *         "devSrc": "dev",
     *         "purpose": "jfPrps",
     *             "devId": "TP01MN2181221000042"
     *     }
     * ]
     */
    public static String sendGetDevData(String devId,String IP,JSONArray ComDataarray) {
        return sendgetDevData(devId,IP,ComDataarray);
    }
    //终端上传局放实时视频数据uploadJfStreamRsp
    //终端上传采样数据（重症监护协议）uploadIcuSampleDataRsp
    //终端上传特高频局放采样数据uploadSampleDataJfRsp
    //终端上传红外采样数据uploadSampleDataIrRsp
    //终端上传可见光采样数据uploadSampleDataCamRsp
    //
    //管理 IED 节点设备
    //
    /**
     * 查询 IED 节点信息getIedNodeInfo
     * @param param 无效参数 null
     * @return null:成功 其它：失败
     */
    public static String sendGetIedNodeInfo(String devId,String IP,String param) {
        return sendgetIedNodeInfo(devId,IP,param);
    }
    //
    /**
     * 设置或者编辑从属终端参数setIedSubDevParam
     * @param IedSubDevAttrarray
     * devSrc 终端类型 String 必备 见附录
     * devId 终端 ID String 必备 见附录
     * macAddr MAC 地址 String 必备 4 个字节 拼接而成的 string。具体含义见 LoRa 通信协议设计文档，此处 IED 主设备只做透传处理。
     * devProduct 终端型号 String 可选 新增从设备是必备
     * devType 终端类型 String 可选 新增从设备是必备
     * sampleBand 采样频段 String 可选 0,1,2 具体见 LoRa 通信协议，此处透传
     * sampleFreq 采样频率 String 可选 0,1,2 同上
     * listenInterval 侦听间隔 String 可选 0-9999(s) 2 个字节，低字节在前。拼接成 string。此处透传。
     * sampleStartTime 采样开始时间 String 可选 时 分 秒 3 个字节拼接。此处透传
     * sampleInterval 采样间隔 String 可选 2 字节，分钟 拼接而成，此处透传
     * sampleDurationTime 采样持续时长 String 可选 0-255 秒 透传
     * @return null:成功 其它：失败
     * 事例
     *     "IedSubDevAttr": [
     *     {
     *         "devSrc": "ied",
     *             "devId": "SU10ABC123456",
     *             "macAddr":"36,45,12,ac",
     *             "sampleBand": "2",
     *             "sampleFreq": "1",
     *             "listenInterval":"15,25",
     *             "sampleStartTime":"12,30,30",
     *             "sampleInterval":"5,36",
     *             "sampleDurationTime":"50"
     *     },
     *     {
     *         "devSrc": "ied",
     *             "devId": "SU10ABC665588",
     *             "macAddr":"36,45,12,ac",
     *             "sampleBand": "2",
     *             "sampleFreq": "1",
     *             "listenInterval":"15,25",
     *             "sampleStartTime":"12,30,30",
     *             "sampleInterval":"5,36",
     *         "sampleDurationTime":"50"
     *     }
     * ]
     */
    public static String sendSetIedSubDevParam(String devId,String IP,JSONArray IedSubDevAttrarray) {
        return sendsetIedSubDevParam(devId,IP,IedSubDevAttrarray);
    }
    //

    /**
     * 查询从属终端参数getIedSubDevParam
     * @param param  无效参数
     * @return null:成功 其它：失败
     */
    public static String sendGetIedSubDevParam(String devId,String IP,String param) {
        return sendgetIedSubDevParam(devId,IP,param);
    }
    //
    /**
     * 设置采样频点setIedSampleBand
     * @param IedSubDevAttrarray
     * @return null:成功 其它：失败
     */
    public static String sendSetIedSampleBand(String devId,String IP,JSONArray IedSubDevAttrarray) {
        return sendsetIedSampleBand(devId,IP,IedSubDevAttrarray);
    }
    //

    /**
     * 新增从设备addIedSubDev
     * @param IedSubDevAttrarray
     * @return null:成功 其它：失败
     */
    public static String sendAddIedSubDev(String devId,String IP,JSONArray IedSubDevAttrarray) {
        return sendaddIedSubDev(devId,IP,IedSubDevAttrarray);
    }
    //

    /**
     * 删除从设备delIedSubDev
     * @param IedSubDevAttrarray
     * @return null:成功 其它：失败
     */
    public static String sendDelIedSubDev(String devId,String IP,JSONArray IedSubDevAttrarray) {
        return senddelIedSubDev(devId,IP,IedSubDevAttrarray);
    }
    //

    /**
     * 删除全部从设备delAllIedSubDev
     * @param param 无效参数
     * @return null:成功 其它：失败
     */
    public static String sendDelAllIedSubDev(String devId,String IP,String param) {
        return senddelAllIedSubDev(devId,IP,param);
    }
    //

    /**
     * 配置从设备的上传参数setIedSubDevUploadParam
     * @param IedSubDevUploadParamobj IED 从设备上传数据参数
     * uploadDurationTime 上传时长 String 必备 秒 上传数据允
     * uploadDelayTime 上传延时 String 必备 秒
     * sampleInterval 采样间隔 String 可选 分钟 默认 720
     * @return null:成功 其它：失败
     * 事例
     * "IedSubDevUploadParam": {
     * "uploadDurationTime": "50",
     * "uploadDelayTime": "120",
     * "sampleInterval": "720"
     * }
     */
    public static String sendSetIedSubDevUploadParam(String devId,String IP,JSONObject IedSubDevUploadParamobj) {
        return sendsetIedSubDevUploadParam(devId,IP,IedSubDevUploadParamobj);
    }
    /**
     * 召测某个模块cmdRtSamplingMod
     * @param RtSampleModobj
     * devSrc 终端类型 String 必备 见上文
     * purpose 用途定义 String 必备 见上文
     * devId 终端 ID String 必备 见上文
     * module 传感器类型 String 必备
     *      1 String UHF 特高频
     *      2 String IR 红外
     *      3 String Camera 可见光
     *      4 String TH 温湿度传感器
     *      5 String HFCT 高频电流传感器
     *      6 String Sound 声音传感器
     * @return  null:成功 其它：失败
     * 事例
     * "RtSampleMod": {
     *         "devSrc": "dev",
     *                 "purpose": "rtSample",
     *                 "devId": "TP01MN2181221000042",
     *         "module": "camera"
     *     }
     */
    public static String sendCmdRtSamplingMod(String devId,String IP,JSONObject RtSampleModobj) {
        return sendcmdRtSamplingMod(devId,IP,RtSampleModobj);
    }
    //设置 SU10 相关参数setIedSubDevParam
//    public static String sendSetIedSubDevParam(JSONObject ComCommandobj) {
//        return sendsetIedSubDevParam(ComCommandobj);
//    }
    //心跳检测keepalive
    //控制云台旋转cmdYtRotate
    //新增云台标定角度addYtTagAngles
    //删除所有云台标定角度delAllYtTagAngles
    //删除指定的云台标定角度delYtTagAngles
    //修改指定的云台标定角度setYtTagAngles
    //查询云台标定的角度列表getYtTagAngles
    //设置、查询标定角度的红外融合参数 目前默认在云台标定角度时，不做红外融合功能。暂预留。
    //设置、查询标定角度的红外报警参数
    //设置、查询标定角度的台账参数

    //设置标定角度是否完成参数配置setYtTagAngleState
    //查询标定角度是否完成参数配置getYtTagAngleState
    //查询云台属性getYtAttr
    //设置云台启用或者禁用setYtSupportAttr
    //终端上报云台属性uploadYtAttr
    //设置终端连接服务器网址和端口setServerAddress
    //查询终端连接服务器网址和端口号getServerAddress

    //预留
    //更新红外坏点修复结果
    //更新视频信息
    //更新 WiFi 热点状态
}
